public class demo1 {
    class Solution {
        public int maxProfit(int[] prices) {
            int n=prices.length;
            int[][]dp=new int[n][3];
            //dp[i][0]表示该位置结束后处于买入状态
            //      1                   卖出状态
            //      2                   冷冻期状态
            dp[0][0]=-prices[0];
            dp[0][1]=0;
            dp[0][2]=0;
            if(n==1)return 0;
            for(int i=1;i<n;i++){
                dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]-prices[i]);//买和不买两种进入买入状态
                dp[i][1]=Math.max(dp[i-1][2],dp[i-1][1]);
                dp[i][2]=dp[i-1][0]+prices[i];
            }
            return Math.max(dp[n-1][1],dp[n-1][2]);
        }
    }
}
